package com.session02;

import java.util.Scanner;

public class TestString {
    public static void main(String[] args) {
        //1、String当中与字符数组有关的方法
        String str = "hello";
        int length = str.length();//数组长度

        char[] chars = str.toCharArray();//把字符串内容取出来放入一个字符数组

        char c = str.charAt(0);//获取某个下标位置的字符

        int index = str.indexOf('e');//返回一个字符在字符串下的位置

        int index2 = str.lastIndexOf('l');//最后一次出现的位置

        String sub = str.substring(2, 4);//截取子串,从下标2开始截取，到4结束，不包括4

        //2、String当中与字符内容有关的方法
        boolean flag = str.equals("hello");
        flag = str.equalsIgnoreCase("HELLO");

        int com = str.compareTo("world");//比较两个字符串的差值，相当于str-"world"
        com = str.compareToIgnoreCase("WORLD");

        str = str.toUpperCase();//字符转化为大写
        str = str.toLowerCase();//字符转化为小写

        flag = str.startsWith("he");//判断字符串是否以某个前缀开头
        flag = str.endsWith(".");//判断字符串是否以某个后缀开头
        flag = str.contains("el");//是否包含某个子串

        str = str.replace('l', 'L');//替换

        //3、必须掌握的三个特殊方法
        //3-1、trim方法
        //用来去掉字符串前后的空格
        String input = "  hello  ";
        input = input.trim();
        System.out.println(input);
        //3-2、split方法
        //字符串的拆分
        String msg = "2022-06-07";
        String[] arr = msg.split("[-]");
        System.out.println(arr[1]);

        //3-3、matchs方法
        //专门用于判断一个字符串是否满足正则表达式的要求
        /*
            正则表达式（Regex）: 是一个用来规范字符串内容的表达式；
            1、正则表达式本身就是一个字符串形式的表达式；
            2、学习正则表达式就是要去学习里面的各种符号；
            2-1、[] --- 表示1个字符，然后在里面书写上这个字符可以是哪些选择
                 [13579abc] --- 代表字符串只能有一个字符，且只能是13579abc中的某一个
                 [0-9] [a-z] [A-Z]
                 [^abc] -- ^代表取反，即除了abc都可以
            2-2、{} --- 代表的是前面的正则表达式出现的次数
                 {m,n} -- 至少m次，最多n次
                 {m,} -- 至少出现m次
                 {m} --- 只能出现m次
                 ? --- 出现0-1次
                 * --- 任意次
                 + --- 至少出现1次
            2-3、() --- 任意位数的字符,一般会和|配合，表示分组
                 (8320|8333|88) -- 8320、8333和88都是可以的
         */

        //2万以及2万以下的100的整数
        //String a = "([1-9]|[1-9][0-9]|1[0-9][0-9]|200)00";

        //String a = "([1-9][0-9]?|1[0-9]{2}|200)00";
        //String a = "((([0-9]|1[0-9]{4}|[0-9]{2}|[0-9]{3}|[0-9]{4}).[0-9][0-9])|20000)";
        String a = "((([0-9]|1[0-9]{4}|[0-9]{2}([0-9]?){2}).[0-9][0-9])|20000)";
        Scanner scan = new Scanner(System.in);
        System.out.println("请输入你要存款的金额：");
        String inputMoney = scan.next();
        if (inputMoney.matches(a)) {
            //int money = Integer.parseInt(inputMoney);
            double money = Double.parseDouble(inputMoney);
            System.out.println("存款业务实现");
        } else {
            System.out.println("本机只接受2万以内的百元整钞。");
        }

        /*
            在String当中除了matches方法支持正则表达式，
            还有两个常用方法是支持正则的
            split()
         */
    }
}
